1
自然な構文:演算子オーバーロードの哲学
AI037Lesson 17
00:00

この哲学は 自然な構文 ユーザー定義型が 第一級の市民として振る舞うべきであると主張していますという主張を支持します。演算子オーバーロードを実装することで、 演算子オーバーロードクラスが標準的な記法(例: + または ==)を使用できるようになり、認知的負荷を軽減し、 最小驚異の原則を満たすことができます。

1. 構造と呼び出し方

演算子とは、特別な名前を持つ関数です。キーワード operator に続くシンボルで構成されます。 単項演算子 は1つのオペランドを持ち、 二項演算子 は2つのオペランドを持ちます。メンバー関数として定義された場合、左側のオペランドは メンバー関数暗黙的な thisポインタ (a.operator+(b))にバインドされます。非メンバ関数として定義された場合、両方のオペランドは明示的になります( 非メンバoperator+(a, b))。

オーバーロード可能+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []オーバーロード不可能:: (スコープ).* (メンバの参照解除)を満たすことができます。 (ドット)?: (条件付き)表14.1 演算子の許可状況(参考:p. 684)

2. 制約と倫理

C++は「言語の乱用」を防ぎます:新しいシンボル(例: **)を作成したり、組み込み型(例: int + int)の演算を再定義することはできません。優先順位と結合規則は 変更不可です。アーキテクチャ上の原則: == を定義するクラスは、 std::findを満たすことができます。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>